java.time
是JDK8以後引入的日期相關API,主要是用來解決過去在使用Date
、Calendar
中存在的一些問題
過去遇到的問題
SimpleFormat
格式化只針對Date
,Calendar
不可以使用java.time
中常用的幾個類:
LocalDate
LocalTime
LocalDateTime
靜態方法:
now()
:依照類的名稱可以得到對應的日期、時間、日期和時間of(xx , xx, xx, xx...)
:依照類的名稱可以將物件設定為of
參數所寫的日期、時間、日期和時間getXXX()
:獲取對應的xxx
,如當月第幾天,當年第幾天等等withXXX()
:返回一個物件,將原本所設定的日期、時間等進行修改,原本物件所設定的日期時間不會被修改。(Calendar
類使用setXXX()
時,會將實例化所設定的日期時間改變,可能會造成不必要的錯誤)plusXXX()
:返回一個物件,將原本所設定的日期、時間等加上
一個值,原本物件所設定的日期時間不會被修改minusXXX()
:返回一個物件,將原本所設定的日期、時間等減去
一個值,原本物件所設定的日期時間不會被修改Instant
:類似於Date
類,主要用於時間戳靜態方法:
now()
:返回一個基於格林威治標準時間
設定的物件ofEpochMilli(long xxx)
:返回一個基於參數
設定的毫秒數所對應的時間toEpochMilli()
:返回Instant
實例化物件的毫秒數的值(long
類型)DateTimeFormatter
:類似SimpleDateFormat
,將日期時間和字串間進行轉換,主要對於LocalDate
LocalTime
LocalDateTime
三個類靜態方法:
ofPattern("yyyy-MM-dd HH:mm:ss")
:依照參數的字串,將日期時間轉換成指定格式format(日期時間物件)
:返回一個對應參數日期時間的字串,參數需放符合ofPattern
格式的日期時間物件,parse(String xxx)
:返回一個TemporalAccessor
類型的物件(TemporalAccessor
是接口),LocalDate
LocalTime
LocalDateTime
都有將TemporalAccessor
實現